class RegisterConfig {
  Step1? step1;
  Step2? step2;
  Step3? step3;

  RegisterConfig({this.step1, this.step2, this.step3});

  RegisterConfig.fromJson(Map<String, dynamic> json) {
    step1 = json["step1"] == null ? null : Step1.fromJson(json["step1"]);
    step2 = json["step2"] == null ? null : Step2.fromJson(json["step2"]);
    step3 = json["step3"] == null ? null : Step3.fromJson(json["step3"]);
  }

  static List<RegisterConfig> fromList(List<Map<String, dynamic>> list) {
    return list.map(RegisterConfig.fromJson).toList();
  }
}

class Step3 {
  String? maintitle;
  Nickname? nickname;
  Birthday? birthday;
  Area? area;
  Pmcode? pmcode;
  String? btntxt;

  Step3({this.maintitle, this.nickname, this.birthday, this.area, this.pmcode, this.btntxt});

  Step3.fromJson(Map<String, dynamic> json) {
    maintitle = json["maintitle"];
    nickname = json["nickname"] == null ? null : Nickname.fromJson(json["nickname"]);
    birthday = json["birthday"] == null ? null : Birthday.fromJson(json["birthday"]);
    area = json["area"] == null ? null : Area.fromJson(json["area"]);
    pmcode = json["pmcode"] == null ? null : Pmcode.fromJson(json["pmcode"]);
    btntxt = json["btntxt"];
  }

  static List<Step3> fromList(List<Map<String, dynamic>> list) {
    return list.map(Step3.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["maintitle"] = maintitle;
    if (nickname != null) {
      json["nickname"] = nickname?.toJson();
    }
    if (birthday != null) {
      json["birthday"] = birthday?.toJson();
    }
    if (area != null) {
      json["area"] = area?.toJson();
    }
    if (pmcode != null) {
      json["pmcode"] = pmcode?.toJson();
    }
    json["btntxt"] = btntxt;
    return json;
  }

  Step3 copyWith({
    String? maintitle,
    Nickname? nickname,
    Birthday? birthday,
    Area? area,
    Pmcode? pmcode,
    String? btntxt,
  }) =>
      Step3(
        maintitle: maintitle ?? this.maintitle,
        nickname: nickname ?? this.nickname,
        birthday: birthday ?? this.birthday,
        area: area ?? this.area,
        pmcode: pmcode ?? this.pmcode,
        btntxt: btntxt ?? this.btntxt,
      );
}

class Pmcode {
  String? title;
  int? view;
  int? edit;
  int? need;

  Pmcode({this.title, this.view, this.edit, this.need});

  Pmcode.fromJson(Map<String, dynamic> json) {
    title = json["title"];
    view = (json["view"] as num).toInt();
    edit = (json["edit"] as num).toInt();
    need = (json["need"] as num).toInt();
  }

  static List<Pmcode> fromList(List<Map<String, dynamic>> list) {
    return list.map(Pmcode.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["title"] = title;
    json["view"] = view;
    json["edit"] = edit;
    json["need"] = need;
    return json;
  }

  Pmcode copyWith({
    String? title,
    int? view,
    int? edit,
    int? need,
  }) =>
      Pmcode(
        title: title ?? this.title,
        view: view ?? this.view,
        edit: edit ?? this.edit,
        need: need ?? this.need,
      );
}

class Area {
  String? title;
  int? view;
  int? edit;
  int? need;

  Area({this.title, this.view, this.edit, this.need});

  Area.fromJson(Map<String, dynamic> json) {
    title = json["title"];
    view = (json["view"] as num).toInt();
    edit = (json["edit"] as num).toInt();
    need = (json["need"] as num).toInt();
  }

  static List<Area> fromList(List<Map<String, dynamic>> list) {
    return list.map(Area.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["title"] = title;
    json["view"] = view;
    json["edit"] = edit;
    json["need"] = need;
    return json;
  }

  Area copyWith({
    String? title,
    int? view,
    int? edit,
    int? need,
  }) =>
      Area(
        title: title ?? this.title,
        view: view ?? this.view,
        edit: edit ?? this.edit,
        need: need ?? this.need,
      );
}

class Birthday {
  String? title;
  int? view;
  int? edit;
  int? need;
  Dict? dict;

  Birthday({this.title, this.view, this.edit, this.need, this.dict});

  Birthday.fromJson(Map<String, dynamic> json) {
    title = json["title"];
    view = (json["view"] as num).toInt();
    edit = (json["edit"] as num).toInt();
    need = (json["need"] as num).toInt();
    dict = json["dict"] == null ? null : Dict.fromJson(json["dict"]);
  }

  static List<Birthday> fromList(List<Map<String, dynamic>> list) {
    return list.map(Birthday.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["title"] = title;
    json["view"] = view;
    json["edit"] = edit;
    json["need"] = need;
    if (dict != null) {
      json["dict"] = dict?.toJson();
    }
    return json;
  }

  Birthday copyWith({
    String? title,
    int? view,
    int? edit,
    int? need,
    Dict? dict,
  }) =>
      Birthday(
        title: title ?? this.title,
        view: view ?? this.view,
        edit: edit ?? this.edit,
        need: need ?? this.need,
        dict: dict ?? this.dict,
      );
}

class Dict {
  Options? options;
  Default? defaultItem;

  Dict({this.options, this.defaultItem});

  Dict.fromJson(Map<String, dynamic> json) {
    options = json["options"] == null ? null : Options.fromJson(json["options"]);
    defaultItem = json["default"] == null ? null : Default.fromJson(json["default"]);
  }

  static List<Dict> fromList(List<Map<String, dynamic>> list) {
    return list.map(Dict.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    if (options != null) {
      json["options"] = options?.toJson();
    }
    if (defaultItem != null) {
      json["default"] = defaultItem?.toJson();
    }
    return json;
  }

  Dict copyWith({
    Options? options,
    Default? defaultItem,
  }) =>
      Dict(
        options: options ?? this.options,
        defaultItem: defaultItem ?? this.defaultItem,
      );
}

class Default {
  int? maleYear;
  int? femaleYear;
  String? year;
  String? month;
  String? day;

  Default({this.maleYear, this.femaleYear, this.year, this.month, this.day});

  Default.fromJson(Map<String, dynamic> json) {
    maleYear = (json["maleYear"] as num).toInt();
    femaleYear = (json["femaleYear"] as num).toInt();
    year = json["year"];
    month = json["month"];
    day = json["day"];
  }

  static List<Default> fromList(List<Map<String, dynamic>> list) {
    return list.map(Default.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["maleYear"] = maleYear;
    json["femaleYear"] = femaleYear;
    json["year"] = year;
    json["month"] = month;
    json["day"] = day;
    return json;
  }

  Default copyWith({
    int? maleYear,
    int? femaleYear,
    String? year,
    String? month,
    String? day,
  }) =>
      Default(
        maleYear: maleYear ?? this.maleYear,
        femaleYear: femaleYear ?? this.femaleYear,
        year: year ?? this.year,
        month: month ?? this.month,
        day: day ?? this.day,
      );
}

class Options {
  int? minyear;
  int? maxyear;

  Options({this.minyear, this.maxyear});

  Options.fromJson(Map<String, dynamic> json) {
    minyear = (json["minyear"] as num).toInt();
    maxyear = (json["maxyear"] as num).toInt();
  }

  static List<Options> fromList(List<Map<String, dynamic>> list) {
    return list.map(Options.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["minyear"] = minyear;
    json["maxyear"] = maxyear;
    return json;
  }

  Options copyWith({
    int? minyear,
    int? maxyear,
  }) =>
      Options(
        minyear: minyear ?? this.minyear,
        maxyear: maxyear ?? this.maxyear,
      );
}

class Nickname {
  String? title;
  int? view;
  int? edit;
  int? need;
  String? maxnum;

  Nickname({this.title, this.view, this.edit, this.need, this.maxnum});

  Nickname.fromJson(Map<String, dynamic> json) {
    title = json["title"];
    view = (json["view"] as num).toInt();
    edit = (json["edit"] as num).toInt();
    need = (json["need"] as num).toInt();
    maxnum = json["maxnum"];
  }

  static List<Nickname> fromList(List<Map<String, dynamic>> list) {
    return list.map(Nickname.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["title"] = title;
    json["view"] = view;
    json["edit"] = edit;
    json["need"] = need;
    json["maxnum"] = maxnum;
    return json;
  }

  Nickname copyWith({
    String? title,
    int? view,
    int? edit,
    int? need,
    String? maxnum,
  }) =>
      Nickname(
        title: title ?? this.title,
        view: view ?? this.view,
        edit: edit ?? this.edit,
        need: need ?? this.need,
        maxnum: maxnum ?? this.maxnum,
      );
}

class Step2 {
  String? maintitle;
  String? subtitle;
  String? defavatar;
  Exppics? exppics;

  Step2({this.maintitle, this.subtitle, this.defavatar, this.exppics});

  Step2.fromJson(Map<String, dynamic> json) {
    maintitle = json["maintitle"];
    subtitle = json["subtitle"];
    defavatar = json["defavatar"];
    exppics = json["exppics"] == null ? null : Exppics.fromJson(json["exppics"]);
  }

  static List<Step2> fromList(List<Map<String, dynamic>> list) {
    return list.map(Step2.fromJson).toList();
  }

  Step2 copyWith({
    String? maintitle,
    String? subtitle,
    String? defavatar,
    Exppics? exppics,
  }) =>
      Step2(
        maintitle: maintitle ?? this.maintitle,
        subtitle: subtitle ?? this.subtitle,
        defavatar: defavatar ?? this.defavatar,
        exppics: exppics ?? this.exppics,
      );
}

class Exppics {
  ExppicsItem? left;
  ExppicsItem? mid;
  ExppicsItem? right;

  Exppics({this.left, this.mid, this.right});

  Exppics.fromJson(Map<String, dynamic> json) {
    left = json["left"] == null ? null : ExppicsItem.fromJson(json["left"]);
    mid = json["mid"] == null ? null : ExppicsItem.fromJson(json["mid"]);
    right = json["right"] == null ? null : ExppicsItem.fromJson(json["right"]);
  }
}

class ExppicsItem {
  String? uri;
  String? txt;

  ExppicsItem({this.uri, this.txt});

  ExppicsItem.fromJson(Map<String, dynamic> json) {
    uri = json["uri"];
    txt = json["txt"];
  }
}

class Step1 {
  String? maintitle;
  String? subtitle;
  Gender? gender;

  Step1({this.maintitle, this.subtitle, this.gender});

  Step1.fromJson(Map<String, dynamic> json) {
    maintitle = json["maintitle"];
    subtitle = json["subtitle"];
    gender = json["gender"] == null ? null : Gender.fromJson(json["gender"]);
  }

  static List<Step1> fromList(List<Map<String, dynamic>> list) {
    return list.map(Step1.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["maintitle"] = maintitle;
    json["subtitle"] = subtitle;
    if (gender != null) {
      json["gender"] = gender?.toJson();
    }
    return json;
  }

  Step1 copyWith({
    String? maintitle,
    String? subtitle,
    Gender? gender,
  }) =>
      Step1(
        maintitle: maintitle ?? this.maintitle,
        subtitle: subtitle ?? this.subtitle,
        gender: gender ?? this.gender,
      );
}

class Gender {
  Male? male;
  Female? female;

  Gender({this.male, this.female});

  Gender.fromJson(Map<String, dynamic> json) {
    male = json["male"] == null ? null : Male.fromJson(json["male"]);
    female = json["female"] == null ? null : Female.fromJson(json["female"]);
  }

  static List<Gender> fromList(List<Map<String, dynamic>> list) {
    return list.map(Gender.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    if (male != null) {
      json["male"] = male?.toJson();
    }
    if (female != null) {
      json["female"] = female?.toJson();
    }
    return json;
  }

  Gender copyWith({
    Male? male,
    Female? female,
  }) =>
      Gender(
        male: male ?? this.male,
        female: female ?? this.female,
      );
}

class Female {
  String? uri;
  int? val;

  Female({this.uri, this.val});

  Female.fromJson(Map<String, dynamic> json) {
    uri = json["uri"];
    val = (json["val"] as num).toInt();
  }

  static List<Female> fromList(List<Map<String, dynamic>> list) {
    return list.map(Female.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["uri"] = uri;
    json["val"] = val;
    return json;
  }

  Female copyWith({
    String? uri,
    int? val,
  }) =>
      Female(
        uri: uri ?? this.uri,
        val: val ?? this.val,
      );
}

class Male {
  String? uri;
  int? val;

  Male({this.uri, this.val});

  Male.fromJson(Map<String, dynamic> json) {
    uri = json["uri"];
    val = (json["val"] as num).toInt();
  }

  static List<Male> fromList(List<Map<String, dynamic>> list) {
    return list.map(Male.fromJson).toList();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json["uri"] = uri;
    json["val"] = val;
    return json;
  }

  Male copyWith({
    String? uri,
    int? val,
  }) =>
      Male(
        uri: uri ?? this.uri,
        val: val ?? this.val,
      );
}
